sudo apt install gitMac: brew install git
Nota: Si es primera ves que instala git se deberá configurar las variables globales como
se indica a continuación:
git config --global user.name "userName"
Advertencia: Reemplaze userName por su nombre de usuario registrado en
GitLab.
git config --global user.email "userEmail"
Advertencia: Reemplaze userEmail por su email registrado en GitLab.
sudo apt-get install postgresqlbrew install postgresqlpip install virtualenvsudo apt install python3-virtualenvsudo su postgrespsqldeveloper: CREATE USER developer WITH PASSWORD 'secreto';
strategrisk:
CREATE DATABASE strategrisk;
virtualenv nombreEntorno -p python3source nombreEntorno/bin/activateAbrir el siguiente enlace: https://gitlab.com/CarlosCastillo10/strategrisk
Realizar un Fork al repositorio base
git clone enlaceCopiadocd strategrisk)e instalar los requerimientos:
pip install -r requirements/prod.txt
. configuration.shflask db upgradeDescargar el archivo de datos de respaldo: data.sql
Cargar los datos de respaldo (data.sql):
4.1 Ingresar como super usuario a postgress: sudo su postgres
4.2 Ubicarse en el directorio donde se haya descargado el archivo data.sql.
4.3 Cargar los datos: psql -d strategrisk -f data.sql
Nota: Es necesario tener activado el entorno virtual
pip install jupyter (Realizarlo si es que no se encuentra
instalado)
. configuration.sh (Revisar paso 1 de CONFIGURACIÓN Y CARGA
DE
DATOS)Levantar jupyter notebook: jupyter notebook y deberá ver una imagen como la siguiente:
from sqlalchemy import create_engine
from sqlalchemy import MetaData, Table
from sqlalchemy.pool import NullPool
import pandas as pd
import plotly.graph_objs as go
def df_liquidez():
engine = create_engine('postgresql://developer:secreto@localhost:5432/strategrisk', poolclass=NullPool)
connection = engine.connect() # Conectarse con la base de datos
table_names = engine.table_names()
metadata = MetaData()
company = Table('company',metadata,autoload = True, autoload_with=engine)
r_company = connection.execute("SELECT * FROM company").fetchall()
df_co = pd.DataFrame(r_company, columns =company.columns.keys())
new_row = {'taxpayer_id':'SEPS-1-1','name':'SEPS-1-1', 'nickname':'SEPS-1-1','load_col':None}
df_co = df_co.append(new_row,ignore_index=True)
ind = Table('indicator',metadata,autoload = True, autoload_with=engine)
r_ind = connection.execute("SELECT * FROM indicator").fetchall()
df_ind = pd.DataFrame(r_ind, columns =ind.columns.keys())
fin_ind = Table('financialindicator',metadata,autoload = True, autoload_with=engine)
r_fin_ind = connection.execute("SELECT * FROM financialindicator").fetchall()
df_fin_ind = pd.DataFrame(r_fin_ind, columns =fin_ind.columns.keys())
threshold = Table('threshold',metadata,autoload = True, autoload_with=engine)
r_umb = connection.execute("SELECT * FROM threshold").fetchall()
df_umb = pd.DataFrame(r_umb, columns = threshold.columns.keys())
fin_sta = Table('financialstate',metadata,autoload = True, autoload_with=engine)
r_fin_sta = connection.execute("""SELECT * FROM financialstate
WHERE account_code
IN ('1304','1302','11','1303','1301','14','1499','1925',
'2904','2903','27','26','24','23','2105',
'2103','2102','2101',
'21',
'2104','2103','2102','2101',
'210155','210150','210145','210140','210135','210131','210131','210130',
'210305','210310','210315','210320','210325','210330','4101')
""").fetchall()
df_fin_sta = pd.DataFrame(r_fin_sta, columns =fin_sta.columns.keys())
evaluationtext = Table('evaluationtext',metadata,autoload = True, autoload_with=engine)
r_msgs = connection.execute("SELECT * FROM evaluationtext").fetchall()
df_evaltxt = pd.DataFrame(r_msgs, columns = evaluationtext.columns.keys())
connection.close() # Cerrar la conexión
df = df_co.merge(df_fin_ind,left_on='taxpayer_id',right_on='company_taxpayer_id')
df_pt = df_fin_ind.pivot_table(index=['company_taxpayer_id','year','month'],values='value',columns=['indicator_code'])
df_pt_finsta = df_fin_sta.pivot_table(index = ['company_taxpayer_id','year','month'],values = 'value',columns=['account_code'])
return df_co,df_pt,df_umb,df_pt_finsta, df_evaltxt, df_ind
df_co, df_liq, df_umb, df_finsta, df_evaltxt, df_indicators = df_liquidez()
df_co.head(5)
| taxpayer_id | name | nickname | load_col | |
|---|---|---|---|---|
| 0 | 1390013678001 | 15 DE ABRIL LTDA | 15 DE ABRIL | None |
| 1 | 1790093204001 | 23 DE JULIO LTDA | 23 DE JULIO | None |
| 2 | 1790567699001 | 29 DE OCTUBRE LTDA | 29 DE OCTUBRE | None |
| 3 | 1790501469001 | ALIANZA DEL VALLE LTDA | ALIANZA DEL VALLE | None |
| 4 | 1891709591001 | AMBATO LTDA | AMBATO | None |
df_g_liq = df_liq.copy().reset_index() # Crear una copia del dataframe de liquidez.
# Combinar los datos del dataframe de liquidez con el dataframe de compañias a través del campo relacional.
df_g_liq = df_co.merge(df_g_liq, left_on='taxpayer_id', right_on = 'company_taxpayer_id')
df_g_liq.drop(df_g_liq[df_g_liq.taxpayer_id == 'SEPS-1-1'].index, inplace=True)
# Identificar el código del indicador que hace referencia a los Activos Líquidos, en este caso es 'AL'
df_indicators.head(5)
| code | name | type | component | |
|---|---|---|---|---|
| 0 | AL | activos liquidos | agregacion | LIQUIDEZ |
| 1 | DCP | Depósitos a corto plazo | agregacion | LIQUIDEZ |
| 2 | IL | inversiones liquidas | agregacion | LIQUIDEZ |
| 3 | LCP | Liquidez de corto plazo | razon | LIQUIDEZ |
| 4 | LCPPRPS | Líquidez de Corto Plazo Posición Relativa al p... | comparativo | LIQUIDEZ |
'''
* Obtener todos los datos del año 2020 del mes de Enero
* Ordenar el dataframe a través del indicador hace referencia a los Activos Líquidos(AL)
de forma que se ordenen los valores mas altos primero, es decir de manera descendente.
* Obtener el top 15 de las mejores compañias con Activos Líquidos.
'''
df_top = df_g_liq[(df_g_liq.year == 2020) & (df_g_liq.month == 1)].sort_values(by = 'AL', ascending = False)[:15]
graph = go.Bar(
x = df_top['nickname'],
y = df_top['AL'],
text= df_top['AL'],
textposition = 'inside',
texttemplate='%{text:,.1f}',
hovertemplate = 'Compañia: %{x}<br>Activos Líquidos: %{y:,.2f}, <extra></extra>'
)
figure = {
'data': graph,
'layout': {
'title': 'Top 15 de las mejores compañias con Activos Líquidos en el año 2020 del mes de Enero',
'yaxis': {
'title': 'Activos Líquidos'
}
}
}
figure = go.Figure(figure)
figure.show()